import axios, { AxiosRequestConfig, AxiosInstance, AxiosResponse } from "axios";
import { ElLoading, ElMessage } from "element-plus";

let loadingInstance: any;

const server: AxiosInstance = axios.create({
  baseURL: "/api",
  timeout: 10 * 1000,
});

// 添加请求拦截器
server.interceptors.request.use(
  // @ts-ignore
  (config: AxiosRequestConfig) => {
    // 在发送请求之前做些什么

    loadingInstance = ElLoading.service({ text: "加载中" });

    return config;
  },
  (error: any) => {
    // 处理请求错误
    return Promise.reject(error);
  }
);
// 添加响应拦截器
server.interceptors.response.use(
  (response: AxiosResponse) => {
    // 对响应数据做点什么

    // 成功 关闭加载和给出提示
    loadingInstance.close();
    if (response.status === 200) {
      ElMessage({ type: "success", message: response.data.message });
    }

    return response;
  },
  (error: any) => {
    // 处理响应错误

    // 失败 关闭加载
    loadingInstance.close();

    return Promise.reject(error);
  }
);
export default server;
